package com.stella.ieproductivitybackend.mapper;

import com.stella.ieproductivitybackend.entity.*;
import com.stella.ieproductivitybackend.entity.Progress;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 工厂页数据层接口
 */
@Mapper
public interface FactoryMapper {
    /**
     * 工厂列表
     */
    List<Factory> getFactoryList();

    /**
     * 品牌列表
     */
    List<Brand> getBrandList(@Param("factory") String factory);

    /**
     * 型体数量
     */
    Integer getModelCount(@Param("factory") String factory);

    /**
     * 型体列表
     */
    List<Model> getModelList(@Param("factory") String factory);

    /**
     * 搜索型体
     */
    List<Model> searchModel(@Param("factory") String factory, @Param("model") String model);

    /**
     * 员工总数
     */
    Integer getEmployeeCount(@Param("factory") String factory);

    /**
     * 直间人工力年份
     */
    List<String> getEmployeeYear();

    /**
     * 直间人工力详情
     */
    List<Employee> getEmployeeDetail(@Param("factory") String factory, @Param("year") String year);

    /**
     * 纯粹达成率图表
     */
    List<PureChart> getPureChart(@Param("factory") String factory);

    /**
     * 目标纯粹达成率图表
     */
    PureChart getTargetPureChart(@Param("factory") String factory);

    /**
     * 纯粹达成率详情
     */
    List<Pure> getPureDetail(@Param("factory") String factory);

    /**
     * 直间达成率图表
     */
    List<DirectChart> getDirectChart(@Param("factory") String factory);

    /**
     * 目标直间达成率图表
     */
    DirectChart getTargetDirectChart(@Param("factory") String factory);

    /**
     * 直间达成率详情
     */
    List<Direct> getDirectDetail(@Param("factory") String factory);

    /**
     * 入库标准秒值图表
     */
    List<WarehousingChart> getWarehousingChart(@Param("factory") String factory);

    /**
     * 目标入库标准秒值图表
     */
    List<WarehousingChart> getTargetWarehousingChart(@Param("factory") String factory);

    /**
     * 入库标准秒值年份
     */
    List<String> getWarehousingYear(@Param("factory") String factory);

    /**
     * 入库标准秒值月份
     */
    List<String> getWarehousingMonth(@Param("factory") String factory);

    /**
     * 入库标准秒值详情
     */
    List<Warehousing> getWarehousingDetail(@Param("factory") String factory, @Param("year") String year);

    /**
     * 入库标准秒值对比
     */
    List<Warehousing> getWarehousingCompare(@Param("factory") String factory, @Param("year1") String year1, @Param("month1") String month1, @Param("year2") String year2, @Param("month2") String month2);

    /**
     * 当月成型完工数量图表
     */
    CompletedChart getCompletedChart(@Param("factory") String factory);

    /**
     * 成型完工数量年份
     */
    List<String> getCompletedYear(@Param("factory") String factory);

    /**
     * 成型完工数量详情
     */
    List<Completed> getCompletedDetail(@Param("factory") String factory, @Param("year") String year);

    /**
     * 当月新旧型体占比图表
     */
    ProportionChart getProportionChart(@Param("factory") String factory);

    /**
     * 新旧型体占比年份
     */
    List<String> getProportionYear(@Param("factory") String factory);

    /**
     * 新旧型体占比详情
     */
    List<Proportion> getProportionDetail(@Param("factory") String factory, @Param("year") String year);

    /**
     * PPH 图表
     */
    List<PPHChart> getPPHChart(@Param("factory") String factory);

    /**
     * 目标 PPH 图表
     */
    PPHChart getTargetPPHChart(@Param("factory") String factory);

    /**
     * PPH 详情
     */
    List<PPH> getPPHDetail(@Param("factory") String factory);

    /**
     * 与核算进度达成图表
     */
    List<ProgressChart> getProgressChart(@Param("factory") String factory);

    /**
     * 与核算进度达成年份
     */
    List<String> getProgressYear(@Param("factory") String factory);

    /**
     * 与核算进度达成月份
     */
    List<String> getProgressMonth(@Param("factory") String factory);

    /**
     * 与核算进度达成详情
     */
    List<Progress> getProgressDetail(@Param("factory") String factory, @Param("year") String year, @Param("month") String month);

    /**
     * 型体工时效率
     */
    List<Efficiency> getEfficiency(@Param("factory") String factory, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("brand") List<String> brand, @Param("model") String model);

    /**
     * 制程组别纯粹达成率及排名
     */
    List<Ranking> getRanking(@Param("factory") String factory, @Param("thisTime") String thisTime, @Param("lastTime") String lastTime, @Param("operation") String operation);
}
